package com.code.qgjx.service;

import com.code.qgjx.entity.StudentJob;
import java.util.List;
import java.util.Map;

public interface StudentJobService {
    
    // 申请岗位
    boolean applyJob(StudentJob studentJob);
    
    // 退出岗位
    boolean quitJob(Long userId, Long jobPositionId);
    
    // 更新岗位状态
    boolean updateJobStatus(StudentJob studentJob);
    
    // 获取学生的所有岗位（包含岗位详细信息）
    List<Map<String, Object>> getStudentJobsWithDetails(Long userId, int start, int limit, String departmentName,Integer status);
    
    // 获取学生岗位总数（包含岗位详细信息）
    int getStudentJobCountWithDetails(Long userId, String departmentName,Integer status);
    
    // 获取学生的所有岗位
    List<StudentJob> getStudentJobs(Long userId);
    
    // 获取岗位下的所有学生
    List<StudentJob> getJobStudents(Long jobPositionId);
    
    // 查询特定学生的特定岗位
    StudentJob getStudentJob(Long userId, Long jobPositionId);
    
    // 获取所有学生岗位信息
    List<StudentJob> getAllStudentJobs();
    
    // 分页获取所有学生岗位信息
    List<StudentJob> getAllStudentJobsWithPage(int start, int limit);
    
    // 分页获取学生的所有岗位
    List<StudentJob> getStudentJobsWithPage(Long userId, int start, int limit);
    
    // 分页获取岗位下的所有学生
    List<StudentJob> getJobStudentsWithPage(Long jobPositionId, int start, int limit);
    
    // 分页获取特定状态的岗位
    List<StudentJob> getStudentJobsByStatusWithPage(Integer status, int start, int limit);
    
    // 获取总数
    int getStudentJobCount();
    
    // 获取学生岗位总数
    int getStudentJobCountByUserId(Long userId);
    
    // 获取岗位学生总数
    int getStudentJobCountByJobPositionId(Long jobPositionId);
    
    // 获取特定状态的岗位总数
    int getStudentJobCountByStatus(Integer status);
} 